本文介绍通过OpenTelemetry Ruby SDK将Ruby应用的Trace数据接入到日志服务的操作步骤。
前提条件
- 已创建Trace实例。更多信息,请参见创建Trace实例。
- 已安装Ruby 2.0及以上版本的开发环境。
- 已安装OpenTelemetry Ruby SDK。
如果未安装,可参见如下命令,完成安装。
gem install opentelemetry-api
gem install opentelemetry-sdk
gem install opentelemetry-exporter-otlp
操作步骤
- 配置环境变量。
如下代码中的变量需根据实际情况替换。关于变量的详细说明,请参见变量说明。
export OTEL_RESOURCE_ATTRIBUTES=sls.otel.project=${project},sls.otel.instanceid=${instance},sls.otel.akid=${akid},sls.otel.aksecret=${aksecret},service.name=${service},service.version=${version},host.name=${host}
export OTEL_RESOURCE_ATTRIBUTES=sls.otel.project=${project},sls.otel.instanceid=${instance},sls.otel.akid=${akid},sls.otel.aksecret=${aksecret},service.namespace=${service.namespace},service.name=${service},service.version=${version},host.name=${host}
表 1. 变量说明
变量 |
说明 |
示例 |
${service} |
服务名。根据您的实际场景取值即可。 |
payment |
${version} |
服务版本号。建议按照va.b.c格式定义。
|
v0.1.2 |
${service.namespace} |
服务归属的命名空间。 |
order |
${project} |
日志服务Project名称。 |
test-project |
${instance} |
Trace服务实例ID。更多信息,请参见创建Trace实例。
|
test-traces |
${akid} |
阿里云账号AccessKey ID。
建议您使用只具备日志服务Project写入权限的RAM用户的AccessKey(包括AccessKey ID和AccessKey Secret)。授予RAM用户向指定Project写入数据权限的具体操作,请参见授权。如何获取AccessKey的具体操作,请参见访问密钥。
|
无 |
${aksecret} |
阿里云账号AccessKey Secret。
建议您使用只具备日志服务Project写入权限的RAM用户的AccessKey。
|
无 |
${host} |
主机名。 |
localhost |
- 设置埋点。
如下代码中的${endpoint}变量需根据实际情况替换。关于变量的详细说明,请参见变量说明。更多接入示例请参见opentelemetry-ruby。
require 'opentelemetry/sdk'
require 'opentelemetry-exporter-otlp'
# Configure the sdk with default export and context propagation formats
# see SDK#configure for customizing the setup
OpenTelemetry::SDK.configure do |c|
c.add_span_processor(
OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
OpenTelemetry::Exporter::OTLP::Exporter.new(
endpoint: 'https://${endpoint}/opentelemetry/v1/traces'
)
)
)
end
# To start a trace you need to get a Tracer from the TracerProvider
tracer = OpenTelemetry.tracer_provider.tracer('my_app_or_gem', '0.1.0')
tracer.in_span('foo') do |span|
# set an attribute
span.set_attribute('tform', 'osx')
# add an event
span.add_event('event in bar')
# create bar as child of foo
tracer.in_span('bar') do |child_span|
# inspect the span
pp child_span
end
end
sleep 10
表 2. 变量说明
变量 |
说明 |
示例 |
${endpoint} |
日志服务Project的接入地址,格式为${project}.${region-endpoint},其中:
- ${project}:日志服务Project名称。
- ${region-endpoint}:日志服务Project所在地域的访问域名,支持公网和阿里云内网(经典网络、VPC)。更多信息,请参见服务入口。
|
https://test-project.cn-hangzhou.log.aliyuncs.com |